#include <BLEDevice.h>

BLEScan *pBLEScan;
String getb = "0000fdaa-0000-1000-8000-00805f9b34fb";

bool startBle = false;

// 蓝牙扫描
bool Lanya()
{
    BLEScanResults foundDevices = pBLEScan->start(1); // 启动扫描2秒，该方式此处会阻塞直到扫描结束

    if (startBle)
    {
        return true;
    }
    else
    {
        return false;
    }
}

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
    void onResult(BLEAdvertisedDevice advertisedDevice)
    {
        String get = advertisedDevice.getServiceDataUUID().toString().c_str();
        if (get == getb)
        {
            startBle = true;
            int W = advertisedDevice.getRSSI();
            advertisedDevice.getScan()->stop();
            pBLEScan->clearResults(); // 清除扫描结果释放空间
        }
        else
        {
            startBle = false;
        }
    }
};

// 初始化，相当于main 函数
void setup_ble()
{

    // 蓝牙配置
    BLEDevice::init("");
    pBLEScan = BLEDevice::getScan();                                           // 获取扫描对象
    pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); // 添加搜索到设备Advertising广播时的回调函数
    pBLEScan->setActiveScan(true);                                             // 启用主动扫描
    pBLEScan->setInterval(100);                                                // 相邻两次扫描开始时间间隔（单位：毫秒）
    pBLEScan->setWindow(80);                                                   // 一次扫描持续时间（单位：毫秒）
                                                                               // 这个参数必须小于等于setInterval()中的参数
                                                                               // 如果这个参数等于setInterval()中的参数则表示不间断的连续扫描
}